package main

import (
	"fmt"
	"reflect"
)

// 定义学生结构体
type Student struct {
	Name string
	Age  int
}

// 定义函数操作结构体进行反射操作
func testReflect(b interface{}) {
	//获取到 reflect.Value
	rVal := reflect.ValueOf(b)
	fmt.Println("rVal=", rVal)

	// 获取到 reflect.Value
	n := rVal.Elem().Field(0).Interface().(string)
	fmt.Println("n=", n)

	// 修改结构体的值
	rVal.Elem().Field(0).SetString("jack")
}

func main() {
	//第十四章 反射
	// 定义一个student实例
	stu := Student{
		Name: "tom",
		Age:  20,
	}
	// 调用 testReflect 函数
	testReflect(&stu)
	fmt.Println(stu)
}
